#include<iostream>
#include<string>
#include <vector>
#include <queue>
#include <list>
#include <map>
#include <set>

using namespace std;
//int main() {
//	LLONG_MAX;
	// 7  -> 4     + 3   =   10  -> 5    +3/2  
	// 7  -> 4     + 2   =   9   -> 5    +2/2
	// 8  -> 4     + 3   =   11  -> 6    + (3+1)/2 
	// 8  -> 4     + 2   =   10  -> 5    + (2+1)/2 
    //using ll = long long;
    //int main()
    //{
    //    int n;  cin >> n;
    //    map<ll, ll> mm;
    //    ll v, a; cin >> v >> a;
    //    ll size = 0;
    //    mm[v] = a;  size = a;
    //    auto ret = mm.begin();
    //    cout << ret->first << endl;
    //    int oldpos = a / 2; //   ret是原本数组中该数字的第几个
    //    while (--n) {
    //        ll v, a; cin >> v >> a;
    //        int changepos = 0;
    //        if (size % 2 == 0) {
    //            changepos = (a + 1) / 2;
    //        }
    //        else {
    //            changepos = a / 2;
    //        }
    //        size += a;
    //        mm[v] += a;
    //        if (v > ret->first) {
    //            while (changepos > ret->second - oldpos) {
    //                changepos -= ret->second - oldpos;
    //                oldpos = 0;
    //                ret++;
    //            }
    //            oldpos = changepos;
    //        }
    //        else if (v < ret->first) {
    //            while (changepos > oldpos) {
    //                changepos -= oldpos;
    //                ret--;
    //                oldpos = ret->second;
    //            }
    //            oldpos -= changepos;
    //        }
    //        cout << ret->first << endl;
    //    }
    //    return 0;
    //}
using ll = long long;
int main()
{
    int n;  cin >> n;
    map<ll, ll> mm;
    ll v, a; cin >> v >> a;
    ll size = 0;
    mm[v] = a;  size = a;
    auto ret = mm.begin();
    cout << ret->first << endl;
    int oldpos = a; //   ret是原本数组中该数字的第几个
    while (--n) {
        ll v, a; cin >> v >> a;
        size += a;
        int newpos = (size + 1) / 2;
        mm[v] += a;
        if (v > ret->first) {
            while (oldpos < newpos) {
                ret++;
                oldpos += ret->second;
            }
        }
        else if (v < ret->first) {
            oldpos += a;
            if (oldpos > newpos) {
                while (oldpos > newpos) {
                    oldpos -= ret->second;
                    ret--;
                }
                if (ret == mm.end()) {
                    ret = mm.begin();
                }else
                    ret++;
                oldpos += ret->second;
            }
        }
        cout << ret->first << endl;
    }
    return 0;
}
